In the past twenty years, software development projects have grown from small projects executed by one or two programmers in a period of weeks or months to huge endeavors involving dozens of programmers and millions of lines of code. As organizations develop increasingly large libraries of past projects, it becomes more and more difficult to apply past solutions to new problems. In a one- or two-person environment, a programmer could often remember that a particular function had previously been created, and could locate the old code relatively easily. With the advent of object-oriented programming and multiuser development environments, the number of software objects an enterprise may own has increased exponentially, while the ability of any particular user to remember or find legacy code has diminished.
Various tools have been developed to help organizations keep track of software resources to avoid reinventing the wheel with each new project. These usually take the form of software libraries, which are typically organized by project and/or broad function. It is often difficult to find in many libraries “elemental” functions that may be used in a wide variety of different types of code, such as currency- or time-handling functions. Further, the organization of the libraries makes it difficult for anyone but a programmer who is already somewhat familiar with the assets to identify useful resources.
It is an object of the present invention to provide an improved system for managing software resources. Preferably, such a system should allow nonprogrammers to collaboratively participate in the search for needed functionality and identify available resources that will minimize the amount of new effort required for development projects.